<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class f_produto extends CI_Controller {
    private $sessao;

    function __construct(){
        parent::__construct();
        $this->load->model("ProdutoModel");
        $this->load->model("CategoriaModel");
        $this->load->model("Log");
        $this->load->model("FornecedorModel");
        $this->load->model("PedidoModel");

        //Verifica se está logado
        $this->load->helper("auth");
        $this->sessao = f_logado();
        //restringir();
    }

    public function index($mensagem = "")
    {
        $produtos = $this->ProdutoModel->getProdutoFornecedor($this->sessao->idFornecedor);

        if( $produtos->num_rows() > 0 ) :
            $lista = "";
            $linha = 0;
            foreach( $produtos->result() as $produto ) :
                if ($linha == 0)
                    $lista .= "<tr class=\"impar\">\n\t\t";
                else
                    $lista .= "<tr>\n\t\t";
                $lista .= "<td><input type=\"checkbox\" name=\"produto_$produto->idProduto\"/></td>\n\t";
                $lista .= "<td>". anchor("fornecedor/f_produto/editar/".$produto->idProduto, $produto->nome)."</td>\n\t";
                $lista .= "<td>$produto->descricao</td>\n\t";
                $lista .= "<td>$produto->quantidade</td>\n\t";
                if($produto->autorizado == true)
                    $lista .= "<td>Sim</td>\n";
                else
                    $lista .= "<td>Não</td>\n";
                $lista .= "</tr>\n";

                if ($linha == 0 ) $linha = 1;
                else $linha = 0;

            endforeach;

        else :
            $lista = "<tr>\n\t";
            $lista .= "<td colspan=\"3\">Nenhum produto cadastrado.</td>\n";
            $lista .= "</tr>\n";

        endif;

        if($mensagem == "sucesso") $mensagem = "\nOperação realizada com Sucesso!\n";
        $dados = array(
            "titulo" => "Gerenciamento de Produtos",
            "user" => $this->sessao->nome,
            "lista" => $lista,
            "mensagem" => $mensagem
            );

        $main = array(
            "dados" => $dados,
            "link" => "fornecedor/f_listar_produto_view",
            );
        
        $this->load->view("template",$main);
    }

    public function cadastrar(){

        $this->load->helper("form");
        $this->load->library("form_validation");

        $categorias = "";

        $row = $this->CategoriaModel->getCategoriaNivel(0);
        if( $row->num_rows() > 0 ) :
            foreach($row->result() as $categoria) :
                $categorias .= "<option value=\"$categoria->idCategoria\"". set_select("categoria_1", $categoria->nome). ">$categoria->nome</option>\n";
            endforeach;
        else :
            break;
        endif;

        $dados = array(
            "titulo" => "Cadastro de Produtos",
            "categorias" => $categorias,
            "erro" => ""
            );

        $main = array(
            "dados" => $dados,
            "link" => "fornecedor/f_cad_produto_view"
            );


        $this->form_validation->set_rules('nome', 'Nome', 'required|min_length[4]');
        $this->form_validation->set_rules('descricao', 'Descricao');
        $this->form_validation->set_rules('quantidade', 'Quantidade', 'required|numeric');
        $this->form_validation->set_rules('preco', 'Preco', 'required');
        $this->form_validation->set_rules('prazoEntrega', 'Prazo de Entrega', 'required');
        $this->form_validation->set_rules('prazoPagamento', 'Prazo de Pagamento', 'required');
        $this->form_validation->set_rules('formaPagamento', 'Forma de Pagamento', 'required');
        $this->form_validation->set_rules('categoria[]', 'Categoria', 'callback_select_check');
       
        if ($this->form_validation->run() == false) :
            $this->load->view('template', $main);

        else :
            $dir = './fotos/produto/';
            $config['upload_path'] = $dir;
            $config['allowed_types'] = 'gif|jpg|png';
            $config['file_name'] = "arquivo_novo";
            $config['max_size']	= '1000';
            $config['max_width']  = '1024';
            $config['max_height']  = '768';

            $this->load->library('upload', $config);
            $this->upload->initialize($config);
            $this->upload->do_upload();
            if( strstr("Você não selecionou um arquivo para envio", $this->upload->display_errors())){
                $dados['erro'] = $this->upload->display_errors();
                $main['dados'] = $dados;
                $this->load->view('template', $main);
            }
            else{
                $insert = array(
                    "nome"  => $this->input->post("nome"),
                    "descricao" => $this->input->post("descricao"),
                    "quantidade" => $this->input->post("quantidade"),
                    "preco" => preco_bd($this->input->post("preco")),
                    "formaPagamento" => $this->input->post("formaPagamento"),
                    "prazoPagamento" => $this->input->post("prazoPagamento"),
                    "prazoEntrega" => $this->input->post("prazoEntrega"),
                    "idFornecedor" => $this->sessao->idFornecedor,
                    "autorizado" => false,
                    "dataCadastro" => timestamp()
                    );

                $categoria = $this->input->post("categoria");
                $insert['idCategoria'] = $categoria[count($categoria)-1];

                $this->ProdutoModel->inserir($insert);
               
                $idInserido = $this->ProdutoModel->inserir($insert);
                $data_file = $this->upload->data();
                rename("fotos/produto/arquivo_novo".$data_file['file_ext'], "fotos/produto/$id".$data_file['file_ext']);

                $this->Log->inserir(tipo_usuario(), id_tipo_usuario(), "cadastrou", "produto", $idInserido);
                redirect("fornecedor/f_produto/index/sucesso");
            }
        endif;
    }

    //tem que arrumar as categorias
    public function editar($id = ""){

        if($id == "" )show_404 ();

        $this->load->helper("form");
        $this->load->library("form_validation");

        $produto = $this->ProdutoModel->getProduto($id);
        if($produto == false) show_404 ();

        $pedido = $this->PedidoModel->getProdutoAndamentoEnviado($id);
        if($pedido != false) show_error ("Há um ou mais pedidos para este produto, finalize os pedidos para que possa editá-lo");
        
        $categorias = "";

        $row = $this->CategoriaModel->getCategoriaNivel(0);
        if( $row->num_rows() > 0 ) :
            foreach($row->result() as $categoria) :
                $categorias .= "<option value=\"$categoria->idCategoria\"". set_select("categoria_1", $categoria->nome). ">$categoria->nome</option>\n";
            endforeach;
        else :
            break;
        endif;

         $local = foto_produto_local($id);
        $dados = array(
            "titulo" => "Edição de Produtos",
            "user" => $this->sessao->nome,
            "categorias" => $categorias,
            "produto" => $produto,
            "foto" => foto_produto($id),
            "erro" => ""
            );
        $main = array(
            "dados" => $dados,
            "link" => "fornecedor/f_edit_produto_view",
            );

        $this->form_validation->set_rules('nome', 'Nome', 'required|min_length[4]');
        $this->form_validation->set_rules('descricao', 'Descricao');
        $this->form_validation->set_rules('quantidade', 'Quantidade', 'required|numeric');
        $this->form_validation->set_rules('preco', 'Preco', 'required');
        $this->form_validation->set_rules('prazoEntrega', 'Prazo de Entrega', 'required');
        $this->form_validation->set_rules('prazoPagamento', 'Prazo de Pagamento', 'required');
        $this->form_validation->set_rules('formaPagamento', 'Forma de Pagamento', 'required');
        $this->form_validation->set_rules('categoria[]', 'Categoria', 'callback_select_check');
        
        if ($this->form_validation->run() == false) :
            $this->load->view('template', $main);

        else :
            $dir = './fotos/produto/';
            $config['upload_path'] = $dir;
            $config['allowed_types'] = 'gif|jpg|png';
            $config['file_name'] = $id;
            $config['overwrite'] = "TRUE";
            $config['max_size']	= '1000';
            $config['max_width']  = '1024';
            $config['max_height']  = '768';

            $this->load->library('upload', $config);
            $this->upload->initialize($config);
            $this->upload->do_upload();
            if( strstr("Você não selecionou um arquivo para envio", $this->upload->display_errors())){
                $dados['erro'] = $this->upload->display_errors();
                $main['dados'] = $dados;
                $this->load->view('template', $main);
            }
            else{

                $edit = array(
                    "nome"  => $this->input->post("nome"),
                    "descricao" => $this->input->post("descricao"),
                    "quantidade" => $this->input->post("quantidade"),
                    "preco" => $this->input->post("preco"),
                    "formaPagamento" => $this->input->post("formaPagamento"),
                    "prazoPagamento" => $this->input->post("prazoPagamento"),
                    "prazoEntrega" => $this->input->post("prazoEntrega"),
                    "autorizado" => false
                    );

                $categoria = $this->input->post("categoria");
                $edit['idCategoria'] = $categoria[count($categoria)-1];

                $this->ProdutoModel->update($id,$edit);
                //print_r($this->upload->data());
                //DELETA A IMAGEM ANTIGA
                if($this->upload->data("is_image") != "" && $local != false){
                    print_r($this->upload->data());
                    unlink($local);
                }
                $data_file = $this->upload->data();
                rename("fotos/produto/arquivo_novo".$data_file['file_ext'], "fotos/produto/$id".$data_file['file_ext']);
                
                $this->Log->inserir(tipo_usuario(), id_tipo_usuario(), "editou", "produto", $id);
                redirect("fornecedor/f_produto/index/sucesso");
            }

        endif;
    }

    /**
     * Método para validar campos do tipo select
     *
     * @param <type> $str
     * @return <type>
     */
    function select_check($str){
        if ($str == '0') :
            $this->form_validation->set_message('select_check', 'O campo %s não pode estar em branco');
            return FALSE;
        else :
            return TRUE;

        endif;
    }

    public function deletar(){
        //print_r($this->input->post());
        foreach($this->input->post() as $campo => $valor) :
            $nome = explode("_", $campo);
            //Se a primeira parte do nome do campo é produto
            if($nome[0] == "produto") :
                $pedido = $this->PedidoModel->getProdutoAndamentoEnviado($nome[1]);
                if($pedido != false) show_error ("Há um ou mais pedidos para este produto, finalize os pedidos para que possa deletá-lo");
                $this->ProdutoModel->delete($nome[1]);
                $this->Log->inserir(tipo_usuario(), id_tipo_usuario(), "deletou", "produto", $nome[1]);
                $nome = "";
            endif;
        endforeach;

        redirect("fornecedor/f_produto/index/sucesso");
    }
}